/**
 * 替换缩略图
 */
function switchoverThumbnail(imagePath, scale) {
  if (imagePath) {
    var lastIndexOf = imagePath.lastIndexOf('/');
    var lastStr = imagePath.substr(lastIndexOf, imagePath.length);
    var firstStr = imagePath.substr(0, lastIndexOf); // var sltImagePath = firstStr + '/160_160' + lastStr;
    // var sltImagePath = firstStr + '/160_160' + lastStr;

    var sltImagePath = '';

    if (scale || scale == 'tiny') {
      sltImagePath = firstStr + '/160_160' + lastStr;
    } else {
      sltImagePath = firstStr + '/320_320' + lastStr;
    }

    return sltImagePath;
  } else {
    return null;
  }
}

/**
 * 节流阀，防止重复点击
 */
function throttle(fn, gapTime) {
  if (gapTime == null || gapTime == undefined) {
    gapTime = 1;
  }
  let _lastTime = null;
  return function () {
    let _nowTime = +new Date();

    if ((_nowTime - _lastTime) / 1000 > gapTime || !_lastTime) {
      // fn()
      fn.apply(this, arguments);
      _lastTime = _nowTime;
    }
  };
}

/**
 * 输入金额控制
 */
function amountControl(amount, num) {
  // 三元运算符 是否传入小数点前n位 没有默认赋值6位
  let digitNum = num ? num : 6; // 第一步先转换传入的金额为字符串类型
  let sumAmount = amount.toString(); //第一位输入的 .
  if (sumAmount.indexOf('.') == 0) {
    sumAmount = 0 + sumAmount; //则输出 0.
    return sumAmount; // 第一位输入的就是点 后面无需执行
  } //如果输入的0.00
  if (sumAmount == '0.00') {
    sumAmount = '0.01'; //则输出0.01
    return sumAmount; // 输入的是0.00 直接输出0.01 后面无需执行
  }
  // 正则判断金额
  sumAmount = sumAmount.replace(/[^\d.]/g, ''); // 清除 数字 和 . 以外的字符
  sumAmount = sumAmount.replace(/\.{2,}/g, '.'); // 只保留第一个. 清除多余的
  sumAmount = sumAmount.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); // 删除多余的 .
  sumAmount = sumAmount.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 只能输入两个小数
  // 判断金额中是否有小数点 并且 金额 不为空
  if (sumAmount.indexOf('.') < 0 && sumAmount != '') {
    sumAmount = parseFloat(sumAmount.slice(0, digitNum)); // 没有小数点并且金额不为空 切割 0 至 digitNum 位 并且输出数字类型
  } else {
    // 有小数点
    // 判断金额第0位至小数点的位置是否为0 金额的第一位是否为 0  此意为输入完成后又点击到第一位输入0
    if (sumAmount.slice(0, sumAmount.indexOf('.')) != '0' && sumAmount.slice(0, 1) == '0') {
      sumAmount = sumAmount.slice(1, sumAmount.length); // 进入这说明 第0位数字为0 那就从1位截取到最后
    }
    // 判断小数点的位置是否 大于 digitNum 位
    if (sumAmount.indexOf('.') > digitNum) {
      // 如果大于digitNum位就切割0至digitNum位，拼接小数点后两位 并且输出数字类型
      sumAmount = parseFloat(sumAmount.slice(0, digitNum) + sumAmount.slice(sumAmount.indexOf('.'), sumAmount.length));
    }
  }
  return sumAmount;
}

module.exports = {
  switchoverThumbnail,
  throttle,
  amountControl
}